import ApiFetch from '@syx/syx-request-api/dist';
import { Toast } from '@zd/zds-wechat-lib';
const Api2 = new ApiFetch({
  // timeout:9999999,
  baseUrl: process.env.NODE_ENV == 'development' ? 'api' : '',
  start: (xhr, options) => {
    const { isLoading } = options;
    //console.log('start xhr api2..',xhr, isLoading);
    isLoading && Toast.loading(null, 0);
  },
  end: (xhr = {}, statusStr) => {
    //这里主要是处理请求发送结束返回的错误结果. 2，如果status 码返回500内的报服务器的，接口是不会进入返回值的可能直接在请求时就会被拦截返回，这时需要在 返回status时 抛出异常处理
    const { status = '' } = xhr;
    console.log('end xhr..', xhr, statusStr);
    if (statusStr == 'timeout') {
      Toast.fail('网络超时,请稍后再试.', 3);
      return;
    }
    if (statusStr == 'error') {
      if (status == 500) {
        Toast.fail('服务器无启动,状态码500', 3);
      } else if (status == 502) {
        Toast.fail('务器作网关错误,状态码502', 3);
      } else if (status == 503) {
        Toast.fail('务器作超载或停机维护,状态码503', 3);
      } else if (status == 504 || status == 0) {
        Toast.fail('务器作网络超时,状态码504', 3);
      } else if (status == 404) {
        Toast.fail('网络接口未找到,状态码404', 3);
      } else {
        Toast.fail('网络错误,请稍后再试.', 3);
      }
    }
  },
  error: res => {
    //这里只是针对业务上的错误进行处理
    setTimeout(() => {
      console.log('default.... 处理', res);
      if (res.SYS_HEAD && res.SYS_HEAD.RET_STATUS != 'S') {
        if (res && res.SYS_HEAD && res.SYS_HEAD.RET_MSG) {
          Toast.fail(res.SYS_HEAD.RET_MSG);
        } else {
          Toast.fail('系统业务错误');
        }
      }
    }, 100);
  },
});
export default Api2;
